iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0

module, package, class(類的基礎)

在前面幾篇文章我們,學到許多基礎知識。我們今天要來練習使用 Module(模組) 與 Package(套件)。
當我們在開發大型應用程式時,如果沒有適當的組織程式碼,除了會降低開發的效率外與可讀性,也不易於維護,所以模組(Module)化就顯得格外重要。

專案模組(Module)越來越多,會越難以管理及除錯,這時候就能將模組(Module)打包成套件(Package),利用其階層式的結構來彈性規劃模組(Module)。

所以我接下來要帶大家一起了解與使用 Module 與 Package

Module(模組)

我們先建立一個專案目錄,這裡我取為 my_project。在專案內我用 main.pymodule.py 作區隔方便命名也方便認讀。我們先在 module.py 撰寫簡單的函式。這裡我寫加減乘除

# module.py
def add(n1, n2):
    return n1+n2


def time(n1, n2):
    return n1*n2


def minus(n1, n2):
    return n1-n2


def devide(n1, n2):
    return n1/n2

那我們該如何使用這些 module 呢?
我們可以利用以下語法:

import 模組名稱

我們在 main.py 引入 module.py

# main.py
import module 

print(counter.add(2, 2))

補充: 我們可以在 import module 後面加 as 命名導入模組名稱

如此一來我們在 main.py 要使用 module.py 的函式時,就要使用模組名稱.模組函式名稱(變數1...)

我們可以利用匯入模組讓我們每次使用模組函示打這麼多字,也讓程式更加簡潔。

我們使用以下語法:

from 模組名稱 import 模組內函式名稱

我們實際操作一下

# main.py
from module import add, minus

add(2, 2)

minus(2, 2)

補充 : 在 import 使用 * 可以導入 module.py 所有的函式

Package(套件)

我們在專案目錄底下創建一個目錄,我這邊命名為 package 方便認讀。在package內增加 __init__.py,並且新增其他模組Module1...

__init__.py可以撰寫套件(Package)初始化的程式碼

我們將剛剛寫的模組程式碼貼到Moduel1.py,在main.py引用模組

# main.py
from package import Module1 as Module

print(Module.add(2, 2))

print(Module.minus(2, 2))

print(Module.time(2, 2))

會看到以下結果 :

那如果我們使用 Class 的方法來寫呢?

class(類別)

基本介紹

後面物件導向會在細說。簡單來說,類底下會有許多函式(方法)與變數(屬性)
語法如下:

class 名稱:
    def 函式名稱1:
        函式功能...
        
    def 函式名稱2:
        函式功能...
    .
    .
    .

但是我們這邊會稍微再進階一點,會使用到self語法


class 名稱:
    def __init__(self, 變數1, ...):
        self.變數名稱 = 變數1
            .
            .
            .
    
    def 函式名稱1(self):
        函式功能...
        
    def 函式名稱2(self):
        函式功能...
    .
    .
    .

我將在 Module2.py 內作範例

# Module2.py
class Counter:
    def __init__(self, n1=1, n2=1):
        self.n1 = n1
        self.n2 = n2

    def add(self):
        return self.n1+self.n2

    def time(self):
        return self.n1*self.n2

    def minus(self):
        return self.n1-self.n2

    def devide(self):
        return self.n1/self.n2

在 main.py 導入 package 的 Module2 函式庫,

from package import Module2

count_add = Module2.Counter(4, 6)    # 將我們 Counter class 實體化(實例)
count_minus = Module2.Counter(5, 2)

result_add = count_add.add()    # 方法
result_minus = count_minus.minus()

print(result_add)
print(result_minus)

得到的結果如下圖 :

我就大約介紹到這邊,這就是基本的class長得怎麼樣與專案開發時常會使用到的 Module(模組) 與 Package(套件)的基本介紹

參考資料

解析Python模組(Module)和套件(Package)的概念
Python Module 模組的載入與使用 By 彭彭
Python Package 封包的設計與使用 By 彭彭
Python的包裝機制 — Function, Class, Module, Package
澎澎的教學網站
澎澎的yt教學頻道


上一篇
Day 05 python 超級入門(2)
下一篇
Day 07 python 進階入門(3)
系列文
資工琪琪的後端學習筆記(python&flask)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言